package cn.zwx.common.retry.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author zhangwenxue
 */
@Data
@ConfigurationProperties(prefix = "cn.zwx.retry")
public class RetryProperties {


    /**
     *  初始休眠时间，默认100毫秒
     */
    private Integer initialInterval;

    /**
     * 指定乘数，当前休眠时间*multiplier即为下一次的休眠时间；
     */
    private Integer multiplier;

    /**
     * 指定最大休眠时间，默认30秒，避免multiplier过大引起无限期等待
     */
    private Integer maxInterval;


    /**
     * 重试最大时间  默认超时时间为1秒，在指定的超时时间内允许重试 不配置就无限制
     */
    private Integer retryMaxTime;

    /**
     * 是否异步重试 true异步重试 false 同步重试
     */
    private Boolean async = Boolean.FALSE;

    /**
     *  线程名称前缀
     **/
    private  String threadNamePrefix = "retry-starter-";

    /**
     * 核心线程数
     */
    private Integer corePoolSize;
    /**
     * 最大线程数
     */
    private Integer maxPoolSize;
    /**
     * 队列长度
     */
    private Integer queueCapacity = 200;
    /**
     * 存活时间
     */
    private Integer keepAliveSeconds = 60;

}
